#ifndef _BOUNDARY_TYPE_H_
#define _BOUNDARY_TYPE_H_

#include <string>
#include <map>
#include <utility>


template<typename T>
class BoundaryInput
{
private:
	
	std::map< std::string, std::pair<std::string, T> > _bcData;
	
public:
	
	BoundaryInput();
	
	void setBoundary(std::string Side, std::string type, T T);
		
	T& getBoundaryValue(std::string side);
	
	std::pair<std::string, T>& getBoundary(std::string side);
	
};

template<typename T>
BoundaryInput<T>::BoundaryInput()
{
	
}

template<typename T>
void BoundaryInput<T>::setBoundary(std::string side, std::string type, T T)
{	
	_bcData[side] = std::make_pair(type, T);
}

template<typename T>
T& BoundaryInput<T>::getBoundaryValue(std::string side)
{
	return _bcData[side].second;
}

template<typename T>
std::pair<std::string, T>& BoundaryInput<T>::getBoundary(std::string side)
{
	return _bcData[side];
}
#endif // _BOUNDARY_TYPE_H_